package com.sssre.business.mapper;

import com.sssre.business.domain.TestDriveInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * @author 浪兎兎
 * @create 2025-05-14-9:01
 */
@Mapper
public interface TestDriveInfoMapper {
    /**
     * 查询试驾预约列表
     * @param testDriveInfo 参数
     * @return 结果
     */
    List<TestDriveInfo> selectList(TestDriveInfo testDriveInfo);

    /**
     * 新增
     * @param testDriveInfo 新增的预约单
     * @return 结果
     */
    int add(TestDriveInfo testDriveInfo);

    /**
     * 修改
     * @param testDriveInfo 预约单
     * @return 结果
     */
    int edit(TestDriveInfo testDriveInfo);

    /**
     * 查询一个
     * @param id 主键
     * @return 结果
     */
    TestDriveInfo selectOneById(Long id);

    /**
     * 删除
     * @param id 主键
     * @return 结果
     */
    int deleteById(Long id);

    /**
     * 反馈
     * @param testDriveInfo 反馈的预约单
     * @return 结果
     */
    int feedback(TestDriveInfo testDriveInfo);

    /**
     * 每一天是否有相同联系方式的预约单
     * @param customerContact 联系方式
     * @param appointmentDate 预约日期
     * @return 结果
     */
    TestDriveInfo selectByAppointmentDateAndContact(@Param("customerContact") String customerContact, @Param("appointmentDate") Date appointmentDate);

    /**
     * 每一时间段是否有
     * @param appointmentTime 预约时间
     * @return 结果
     */
    TestDriveInfo selectByAppointmentTime(@Param("appointmentTime") String appointmentTime, @Param("appointmentDate") Date appointmentDate);

    /**
     * 查询禁用的时间
     * @param id 主键
     * @param appointmentDate 预约日期
     * @return 结果
     */
    List<Date> selectEffectiveTime(@Param("id") Integer id, @Param("appointmentDate") Date appointmentDate);
}
